﻿package plugin.newteam.handler
{
    import com.core.*;
    import flash.utils.*;
    import manager.*;
    import plugin.newteam.*;
    import plugin.newteam.model.*;
    import pluginfw.nio.*;
    import pluginfw.nio.imsg.*;
    import view.message.*;

    public class NewTeamHandler extends Object implements IGroupHandler
    {
        private var isyaoq:int;

        public function NewTeamHandler()
        {
            return;
        }// end function

        public function dealSimpleMessage(param1:ISimpleMessage) : void
        {
            var _loc_2:Object = null;
            var _loc_4:Object = null;
            var _loc_5:Boolean = false;
            var _loc_6:Object = null;
            var _loc_7:Object = null;
            var _loc_8:Object = null;
            var _loc_9:Object = null;
            var _loc_10:Array = null;
            var _loc_11:Boolean = false;
            var _loc_12:Array = null;
            var _loc_13:int = 0;
            var _loc_14:Object = null;
            var _loc_15:Object = null;
            var _loc_16:Array = null;
            var _loc_17:int = 0;
            var _loc_3:int = 200;
            switch(param1.getCmd())
            {
                case CMDteam.TEAM_CREATE:
                {
                    _loc_2 = param1.getParam();
                    _loc_8 = this.getTeamData();
                    if (_loc_2 && _loc_2.list)
                    {
                        _loc_6 = _loc_2.list;
                        _loc_8.leader = _loc_2.leader;
                        _loc_7 = ModelProxy.getValue("data", "teamsDic");
                        _loc_12 = ModelProxy.getValue("data", "teams");
                        if (_loc_12 == null)
                        {
                            _loc_12 = new Array();
                            ModelProxy.change("data", "teams", _loc_12);
                        }
                        if (_loc_7 == null)
                        {
                            _loc_7 = new Object();
                            ModelProxy.change("data", "teamsDic", _loc_7);
                        }
                        _loc_13 = 0;
                        while (_loc_13 < _loc_6.source.length)
                        {
                            
                            _loc_4 = _loc_6.source[_loc_13];
                            _loc_7[_loc_4.rid] = true;
                            _loc_8.myteam.push(_loc_4);
                            _loc_12.push(_loc_4.rid);
                            _loc_13++;
                        }
                    }
                    ModelProxy.change("team", "init", null);
                    ModelProxy.change("data", "user.teamid", _loc_2.teamid);
                    ModelProxy.change("zone", "teamupdate", _loc_2.teamid);
                    break;
                }
                case CMDteam.TEAM_INVITE:
                {
                    _loc_5 = ModelProxy.getValue("data", "ischeck");
                    _loc_4 = param1.getParam();
                    _loc_4.duiwu = 1;
                    this.isyaoq = 1;
                    if (_loc_5)
                    {
                        PluginManager.instance.sendToServer("team", CMDteam.TEAM_AGREE, _loc_4.rid);
                    }
                    else
                    {
                        ModelProxy.change("mainui", "zudui", _loc_4);
                    }
                    break;
                }
                case CMDteam.TEAM_APPLY:
                {
                    _loc_5 = ModelProxy.getValue("data", "ischeck");
                    _loc_4 = param1.getParam();
                    _loc_4.duiwu = 2;
                    this.isyaoq = 2;
                    if (_loc_5)
                    {
                        PluginManager.instance.sendToServer("team", CMDteam.AGREE_apply, _loc_4.rid);
                    }
                    else
                    {
                        ModelProxy.change("mainui", "zudui", _loc_4);
                    }
                    break;
                }
                case CMDteam.TEAM_AGREE:
                {
                    _loc_2 = param1.getParam();
                    if (Control.getControl(TeamControl) == null)
                    {
                        _loc_14 = this.getTeamData();
                        if (_loc_14)
                        {
                            _loc_14.myteam.push(_loc_2);
                        }
                    }
                    else
                    {
                        _loc_15 = _loc_2;
                        _loc_15.duiwu = this.isyaoq;
                        this.addteam(_loc_15);
                    }
                    ModelProxy.change("team", "init", null);
                    WarningManager.show(81, [_loc_2.name]);
                    ModelProxy.change("zone", "addteamer", _loc_2);
                    break;
                }
                case CMDteam.TEAM_INIT:
                {
                    _loc_2 = param1.getParam();
                    _loc_9 = this.getTeamData();
                    if (_loc_2 && _loc_2.list)
                    {
                        _loc_6 = _loc_2.list;
                        _loc_9.leader = _loc_2.leader;
                        _loc_7 = ModelProxy.getValue("data", "teamsDic");
                        _loc_16 = ModelProxy.getValue("data", "teams");
                        if (_loc_16 == null)
                        {
                            _loc_16 = new Array();
                            ModelProxy.change("data", "teams", _loc_16);
                        }
                        if (_loc_7 == null)
                        {
                            _loc_7 = new Object();
                            ModelProxy.change("data", "teamsDic", _loc_7);
                        }
                        _loc_9.myteam.length = 0;
                        _loc_13 = 0;
                        while (_loc_13 < _loc_6.source.length)
                        {
                            
                            _loc_4 = _loc_6.source[_loc_13];
                            _loc_7[_loc_4.rid] = true;
                            _loc_16.push(_loc_4.rid);
                            _loc_9.myteam.push(_loc_4);
                            _loc_13++;
                        }
                    }
                    ModelProxy.change("team", "init", null);
                    ModelProxy.change("zone", "teamupdate", _loc_2.teamid);
                    break;
                }
                case CMDteam.TEAM_LEAVE:
                {
                    this.subteamer(int(param1.getParam()));
                    ModelProxy.change("team", "init", null);
                    ModelProxy.change("zone", "subteamer", param1.getParam());
                    break;
                }
                case CMDteam.TEAM_Leader:
                {
                    this.changeleader(int(param1.getParam()));
                    ModelProxy.change("team", "init", null);
                    break;
                }
                case CMDteam.TEAM_Dissolve:
                {
                    this.dissolve();
                    ModelProxy.change("zone", "teamupdate", param1.getParam());
                    ModelProxy.change("team", "init", null);
                    break;
                }
                case CMDteam.TEAM_ERROR:
                {
                    ModelProxy.change("movetips", "error", param1.getParam());
                    break;
                }
                case CMDteam.TEAM_COUNT:
                {
                    ModelProxy.change("team", "teamcount", param1.getParam());
                    break;
                }
                case CMDteam.ZhanTarget:
                {
                    this.ZhanTarget(param1.getParam());
                    break;
                }
                case CMDteam.TEAM_ERROR:
                {
                    ModelProxy.change("movetips", "error", param1.getParam());
                    break;
                }
                case CMDteam.InviteTeam:
                {
                    _loc_2 = param1.getParam();
                    _loc_10 = ModelProxy.getValue("team", "inviteteam");
                    if (_loc_10 == null)
                    {
                        _loc_10 = [];
                    }
                    _loc_11 = true;
                    _loc_17 = 0;
                    while (_loc_17 < _loc_10.length)
                    {
                        
                        if (_loc_10[_loc_17].rid == _loc_2.rid)
                        {
                            _loc_11 = false;
                            break;
                        }
                        _loc_17++;
                    }
                    if (_loc_11)
                    {
                        _loc_10.push(_loc_2);
                    }
                    ModelProxy.change("team", "inviteteam", _loc_10);
                    ModelProxy.change("plugin", "open", {target:"inviteteam"});
                    break;
                }
                default:
                {
                    break;
                }
            }
            return;
        }// end function

        private function changeleader(param1:int) : void
        {
            var _loc_4:Object = null;
            var _loc_2:* = this.getTeamData();
            _loc_2.leader = param1;
            var _loc_3:int = 0;
            while (_loc_3 < _loc_2.myteam.length)
            {
                
                _loc_4 = _loc_2.myteam[_loc_3];
                if (_loc_4.hasOwnProperty("rid") && _loc_4.rid == param1)
                {
                    _loc_2.myteam[_loc_3].leader = 1;
                }
                else
                {
                    _loc_2.myteam[_loc_3].leader = 0;
                }
                _loc_3++;
            }
            return;
        }// end function

        public function dissolve() : void
        {
            var _loc_3:Object = null;
            var _loc_1:* = this.getTeamData();
            var _loc_2:* = UserData.getUserData();
            for each (_loc_3 in _loc_1.myteam)
            {
                
                if (_loc_3.rid == _loc_2.rid && _loc_3.serverid == _loc_2.serverid)
                {
                    _loc_2.teamid = 0;
                    WarningManager.show(84, [_loc_3.name]);
                }
            }
            ModelProxy.change("data", "teams", new Array());
            ModelProxy.change("data", "teamsDic", new Object());
            while (_loc_1.myteam.length > 0)
            {
                
                _loc_1.myteam.pop();
            }
            if (_loc_1.leader)
            {
                _loc_1.leader = 0;
            }
            return;
        }// end function

        private function addteam(param1:Object) : void
        {
            var _loc_4:Object = null;
            var _loc_5:Array = null;
            var _loc_2:* = this.getTeamData();
            _loc_2.myteam.push(param1);
            var _loc_3:* = UserData.getUserData();
            for each (_loc_4 in _loc_2.myteam)
            {
                
                if (_loc_4.rid == _loc_3.rid && _loc_4.serverid == _loc_3.serverid)
                {
                    if (_loc_4.leader == 1 && param1.duiwu == 1)
                    {
                        ModelProxy.change("movetips", "error", param1.name + "同意并加入了您的队伍");
                    }
                }
            }
            _loc_5 = ModelProxy.getValue("data", "teams");
            if (_loc_5 == null)
            {
                _loc_5 = new Array();
                ModelProxy.change("data", "teams", _loc_5);
            }
            _loc_5.push(param1.rid);
            var _loc_6:* = ModelProxy.getValue("data", "teamsDic");
            if (ModelProxy.getValue("data", "teamsDic") == null)
            {
                _loc_6 = new Object();
                ModelProxy.change("data", "teamsDic", _loc_6);
            }
            _loc_6[param1.rid] = true;
            return;
        }// end function

        private function subteamer(param1:int) : void
        {
            var _loc_2:* = this.getTeamData();
            var _loc_3:int = 0;
            while (_loc_3 < _loc_2.myteam.length)
            {
                
                if (_loc_2.myteam[_loc_3].rid == param1)
                {
                    WarningManager.show(84, [_loc_2.myteam[_loc_3].name]);
                    _loc_2.myteam.splice(_loc_3, 1);
                    break;
                }
                _loc_3++;
            }
            var _loc_4:* = ModelProxy.getValue("data", "teams");
            var _loc_5:int = 0;
            while (_loc_5 < _loc_4.length)
            {
                
                if (_loc_4[_loc_5] == param1)
                {
                    _loc_4.splice(_loc_5, 1);
                    break;
                }
                _loc_5++;
            }
            var _loc_6:* = ModelProxy.getValue("data", "teamsDic");
            if (ModelProxy.getValue("data", "teamsDic") == null)
            {
                _loc_6 = new Object();
                ModelProxy.change("data", "teamsDic", _loc_6);
            }
            delete _loc_6[param1];
            return;
        }// end function

        private function getTeamData() : Object
        {
            var _loc_1:* = ModelProxy.getValue("data", "troles");
            if (_loc_1 == null)
            {
                _loc_1 = new Object();
                _loc_1.myteam = [];
                ModelProxy.change("data", "troles", _loc_1);
            }
            return _loc_1;
        }// end function

        public function dealBufferMessage(param1:IBufferMessage) : void
        {
            var _loc_2:int = 0;
            var _loc_3:int = 0;
            var _loc_4:Object = null;
            var _loc_5:Input = null;
            var _loc_6:ByteArray = null;
            var _loc_7:int = 0;
            switch(param1.getCmd())
            {
                case CMDteam.TEAM_COUNT:
                {
                    _loc_4 = new Object();
                    _loc_5 = new Input(null);
                    _loc_6 = param1.getBody();
                    _loc_6.position = 0;
                    _loc_5.setBytes(_loc_6);
                    _loc_4.teamInfoList = new Array();
                    _loc_2 = _loc_5.readShort();
                    _loc_3 = 0;
                    while (_loc_3 < _loc_2)
                    {
                        
                        _loc_7 = _loc_5.readByte();
                        if (_loc_7 != 0)
                        {
                            _loc_4.teamInfoList[_loc_3] = new Object();
                            _loc_4.teamInfoList[_loc_3].rid = _loc_5.readVarInt(false);
                            _loc_4.teamInfoList[_loc_3].teamMemberCount = _loc_5.readVarInt(false);
                            _loc_4.teamInfoList[_loc_3].roleName = _loc_5.readString();
                            _loc_4.teamInfoList[_loc_3].level = _loc_5.readVarInt(false);
                            _loc_4.teamInfoList[_loc_3].factionName = _loc_5.readString();
                            _loc_4.teamInfoList[_loc_3].stageName = _loc_5.readString();
                            _loc_4.teamInfoList[_loc_3].job = _loc_5.readVarInt(false);
                            _loc_4.teamInfoList[_loc_3].sex = _loc_5.readVarInt(false);
                        }
                        _loc_3++;
                    }
                    _loc_4.noTeamRoleIdList = new Array();
                    _loc_2 = _loc_5.readShort();
                    _loc_3 = 0;
                    while (_loc_3 < _loc_2)
                    {
                        
                        _loc_4.noTeamRoleIdList[_loc_3] = _loc_5.readVarInt(false);
                        _loc_3++;
                    }
                    ModelProxy.change("team", "teamcount", _loc_4);
                    break;
                }
                default:
                {
                    break;
                }
            }
            return;
        }// end function

        public function dealProxyMessage(param1:IProxyMessage) : void
        {
            return;
        }// end function

        private function ZhanTarget(param1) : void
        {
            var _loc_2:* = "你的战友" + param1.name + "召唤你";
            Alert2.show(_loc_2, "", ["接受", "", "拒绝"], this.callback, param1);
            return;
        }// end function

        public function callback(param1:Object, param2:Object) : void
        {
            if (param1 == 0)
            {
                PluginManager.instance.sendToServer("team", CMDteam.AgreeZhan, param2.rid);
            }
            return;
        }// end function

    }
}
